home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / term-source.lha / CommandPanel.c < prev    next >
C/C++ Source or Header  |  1996-10-20  |  5KB  |  220 lines

  1. /*
  2. **    CommandPanel.c
  3. **
  4. **    Editing panel for command sequences
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. **
  9. **    :ts=4
  10. */
  11.  
  12. #ifndef _GLOBAL_H
  13. #include "Global.h"
  14. #endif
  15.  
  16. enum    {    GAD_USE=1000,GAD_CANCEL };
  17.  
  18. BOOL
  19. CommandPanel(struct Window *Parent,struct Configuration *LocalConfig)
  20. {
  21.     STATIC WORD LabelTable[] =
  22.     {
  23.         MSG_COMMANDPANEL_STARTUP_LOGIN_MACRO_GAD,
  24.         MSG_COMMANDPANEL_LOGIN_MACRO_GAD,
  25.         MSG_COMMANDPANEL_LOGOFF_MACRO_GAD,
  26.         MSG_COMMANDPANEL_UPLOAD_MACRO_GAD,
  27.         MSG_COMMANDPANEL_DOWNLOAD_MACRO_GAD
  28.     };
  29.  
  30.     LONG i,Max,Len;
  31.     LayoutHandle *Handle;
  32.     BOOL UseIt = FALSE;
  33.  
  34.     SaveConfig(LocalConfig,PrivateConfig);
  35.  
  36.     if(Handle = LT_CreateHandleTags(Parent->WScreen,
  37.         LAHN_LocaleHook,    &LocaleHook,
  38.         LAHN_ExitFlush,        FALSE,
  39.     TAG_DONE))
  40.     {
  41.         struct Window *PanelWindow;
  42.  
  43.         for(i = Max = 0 ; i < NUM_ELEMENTS(LabelTable) ; i++)
  44.         {
  45.             if((Len = LT_LabelChars(Handle,LocaleString(LabelTable[i]))) > Max)
  46.                 Max = Len;
  47.         }
  48.  
  49.         LT_New(Handle,
  50.             LA_Type,    VERTICAL_KIND,
  51.         TAG_DONE);
  52.         {
  53.             LT_New(Handle,
  54.                 LA_Type,    VERTICAL_KIND,
  55.                 LA_LabelID,    MSG_V36_0026,
  56.             TAG_DONE);
  57.             {
  58.                 LT_New(Handle,
  59.                     LA_Type,        STRING_KIND,
  60.                     LA_LabelID,        MSG_COMMANDPANEL_STARTUP_LOGIN_MACRO_GAD,
  61.                     LA_STRPTR,        PrivateConfig->CommandConfig->StartupMacro,
  62.                     LA_Chars,        30,
  63.                     LA_LabelChars,    Max,
  64.                     GTST_MaxChars,    sizeof(PrivateConfig->CommandConfig->StartupMacro) - 1,
  65.                 TAG_DONE);
  66.  
  67.                 LT_New(Handle,LA_Type,XBAR_KIND,TAG_DONE);
  68.  
  69.                 LT_New(Handle,
  70.                     LA_Type,        STRING_KIND,
  71.                     LA_LabelID,        MSG_COMMANDPANEL_LOGIN_MACRO_GAD,
  72.                     LA_STRPTR,        PrivateConfig->CommandConfig->LoginMacro,
  73.                     LA_LabelChars,    Max,
  74.                     GTST_MaxChars,    sizeof(PrivateConfig->CommandConfig->LoginMacro) - 1,
  75.                 TAG_DONE);
  76.  
  77.                 LT_New(Handle,
  78.                     LA_Type,        STRING_KIND,
  79.                     LA_LabelID,        MSG_COMMANDPANEL_LOGOFF_MACRO_GAD,
  80.                     LA_STRPTR,        PrivateConfig->CommandConfig->LogoffMacro,
  81.                     LA_LabelChars,    Max,
  82.                     GTST_MaxChars,    sizeof(PrivateConfig->CommandConfig->LogoffMacro) - 1,
  83.                 TAG_DONE);
  84.  
  85.                 LT_EndGroup(Handle);
  86.             }
  87.  
  88.             LT_New(Handle,
  89.                 LA_Type,                VERTICAL_KIND,
  90.                 LA_LabelID,                MSG_V36_0027,
  91.                 LAGR_LastAttributes,    TRUE,
  92.             TAG_DONE);
  93.             {
  94.                 LT_New(Handle,
  95.                     LA_Type,        STRING_KIND,
  96.                     LA_LabelID,        MSG_COMMANDPANEL_UPLOAD_MACRO_GAD,
  97.                     LA_STRPTR,        PrivateConfig->CommandConfig->UploadMacro,
  98.                     LA_LabelChars,    Max,
  99.                     GTST_MaxChars,    sizeof(PrivateConfig->CommandConfig->UploadMacro) - 1,
  100.                 TAG_DONE);
  101.  
  102.                 LT_New(Handle,
  103.                     LA_Type,        STRING_KIND,
  104.                     LA_LabelID,        MSG_COMMANDPANEL_DOWNLOAD_MACRO_GAD,
  105.                     LA_STRPTR,        PrivateConfig->CommandConfig->DownloadMacro,
  106.                     LA_LabelChars,    Max,
  107.                     GTST_MaxChars,    sizeof(PrivateConfig->CommandConfig->DownloadMacro) - 1,
  108.                 TAG_DONE);
  109.  
  110.                 LT_EndGroup(Handle);
  111.             }
  112.  
  113.             LT_New(Handle,
  114.                 LA_Type,VERTICAL_KIND,
  115.             TAG_DONE);
  116.             {
  117.                 LT_New(Handle,
  118.                     LA_Type,        XBAR_KIND,
  119.                     LAXB_FullSize,    TRUE,
  120.                 TAG_DONE);
  121.  
  122.                 LT_EndGroup(Handle);
  123.             }
  124.  
  125.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  126.                 LAGR_SameSize,    TRUE,
  127.                 LAGR_Spread,    TRUE,
  128.             TAG_DONE);
  129.             {
  130.                 LT_New(Handle,
  131.                     LA_Type,        BUTTON_KIND,
  132.                     LA_LabelID,        MSG_GLOBAL_USE_GAD,
  133.                     LA_ID,            GAD_USE,
  134.                     LABT_ReturnKey,    TRUE,
  135.                     LABT_ExtraFat,    TRUE,
  136.                 TAG_DONE);
  137.  
  138.                 LT_New(Handle,
  139.                     LA_Type,        BUTTON_KIND,
  140.                     LA_LabelID,        MSG_GLOBAL_CANCEL_GAD,
  141.                     LA_ID,            GAD_CANCEL,
  142.                     LABT_EscKey,    TRUE,
  143.                     LABT_ExtraFat,    TRUE,
  144.                 TAG_DONE);
  145.  
  146.                 LT_EndGroup(Handle);
  147.             }
  148.  
  149.             LT_EndGroup(Handle);
  150.         }
  151.  
  152.         if(PanelWindow = LT_Build(Handle,
  153.             LAWN_TitleID,        MSG_COMMANDPANEL_COMMAND_PREFERENCES_GAD,
  154.             LAWN_HelpHook,        &GuideHook,
  155.             LAWN_Parent,        Parent,
  156.             WA_DepthGadget,        TRUE,
  157.             WA_DragBar,            TRUE,
  158.             WA_RMBTrap,            TRUE,
  159.             WA_Activate,        TRUE,
  160.             WA_SimpleRefresh,    TRUE,
  161.         TAG_DONE))
  162.         {
  163.             struct IntuiMessage    *Message;
  164.             BOOL                 Done = FALSE;
  165.             ULONG                 MsgClass;
  166.             struct Gadget        *MsgGadget;
  167.  
  168.             GuideContext(CONTEXT_COMMAND);
  169.  
  170.             PushWindow(PanelWindow);
  171.  
  172.             LT_ShowWindow(Handle,TRUE);
  173.  
  174.             do
  175.             {
  176.                 if(Wait(PORTMASK(PanelWindow->UserPort) | SIG_BREAK) & SIG_BREAK)
  177.                     break;
  178.  
  179.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  180.                 {
  181.                     MsgClass    = Message->Class;
  182.                     MsgGadget    = (struct Gadget *)Message->IAddress;
  183.  
  184.                     LT_ReplyIMsg(Message);
  185.  
  186.                     if(MsgClass == IDCMP_GADGETUP)
  187.                     {
  188.                         switch(MsgGadget->GadgetID)
  189.                         {
  190.                             case GAD_USE:
  191.  
  192.                                 LT_UpdateStrings(Handle);
  193.  
  194.                                 UseIt = Done = TRUE;
  195.                                 break;
  196.  
  197.                             case GAD_CANCEL:
  198.  
  199.                                 Done = TRUE;
  200.                                 break;
  201.                         }
  202.                     }
  203.                 }
  204.             }
  205.             while(!Done);
  206.  
  207.             PopWindow();
  208.         }
  209.  
  210.         LT_DeleteHandle(Handle);
  211.     }
  212.  
  213.     if(UseIt)
  214.         SwapConfig(LocalConfig,PrivateConfig);
  215.     else
  216.         SaveConfig(LocalConfig,PrivateConfig);
  217.  
  218.     return(UseIt);
  219. }
  220.